#include <stdio.h>

#define AA 0
#define AB 1
#define AC -1
// or
enum _e
{
	ac = -1,
	aa = 0, 
	ab = 1,
};

void swen(int va)
{
 /*80484d0:	55                   	push   %ebp
 80484d1:	89 e5                	mov    %esp,%ebp
 80484d3:	83 ec 18             	sub    $0x18,%esp
 80484d6:	8b 45 08             	mov    0x8(%ebp),%eax			// eax = va
 80484d9:	85 c0                	test   %eax,%eax */
	switch(va) {

 /*80484db:	74 1f                	je     80484fc <swen+0x2c>*/	/* = 0 (je->ZF等于/零) */

 /*80484dd:	83 f8 01             	cmp    $0x1,%eax */				/* = 1 */
 /*80484e0:	74 2f                	je     8048511 <swen+0x41>*/

 /*80484e2:	83 f8 ff             	cmp    $0xffffffff,%eax	*/		/* = -1 , ZF=0*/
 /*80484e5:	75 3f                	jne    8048526 <swen+0x56>*/	/* ZF=0, jump */

	default: 
		{
 /*80484e7:	8b 45 08             	mov    0x8(%ebp),%eax
 80484ea:	89 44 24 04          	mov    %eax,0x4(%esp)
 80484ee:	c7 04 24 24 86 04 08 	movl   $0x8048624,(%esp)
 80484f5:	e8 96 fe ff ff       	call   8048390 <printf@plt>*/
			printf("case default, va=%d\n", va);

 /*80484fa:	eb 3e                	jmp    804853a <swen+0x6a>*/
			break;
		}
	
	case AA:	/* va == 0 */
		{
 /*80484fc:	8b 45 08             	mov    0x8(%ebp),%eax		// eax = va
 80484ff:	89 44 24 04          	mov    %eax,0x4(%esp)		// (esp+0x4) = va
 8048503:	c7 04 24 35 86 04 08 	movl   $0x8048635,(%esp)
 804850a:	e8 81 fe ff ff       	call   8048390 <printf@plt>*/
			printf("case AA, va=%d\n", va);

 /*804850f:	eb 29                	jmp    804853a <swen+0x6a>*/
			break;
		}

	/* va == 1 */
	case AB:	
		{
 /*8048511:	8b 45 08             	mov    0x8(%ebp),%eax
 8048514:	89 44 24 04          	mov    %eax,0x4(%esp)
 8048518:	c7 04 24 46 86 04 08 	movl   $0x8048646,(%esp)
 804851f:	e8 6c fe ff ff       	call   8048390 <printf@plt>*/
			printf("case AB, va=%d\n", va);

 /*8048524:	eb 14                	jmp    804853a <swen+0x6a> */
			break;
		}

	/* va == -1 */
	case AC:	
		{
 /*8048526:	8b 45 08             	mov    0x8(%ebp),%eax
 8048529:	89 44 24 04          	mov    %eax,0x4(%esp)
 804852d:	c7 04 24 57 86 04 08 	movl   $0x8048657,(%esp)
 8048534:	e8 57 fe ff ff       	call   8048390 <printf@plt>*/
			printf("case AC, va=%d\n", va);
			break;
		}
	}
 /*8048539:	90                   	nop
 804853a:	c9                   	leave  
 804853b:	c3                   	ret    */
}

int main()
{
 /*804853c:	55                   	push   %ebp
 804853d:	89 e5                	mov    %esp,%ebp
 804853f:	83 e4 f0             	and    $0xfffffff0,%esp
 8048542:	83 ec 20             	sub    $0x20,%esp
 8048545:	c7 44 24 1c 04 00 00 	movl   $0x4,0x1c(%esp)
 804854c:	00 */
	int a = 4;

 /*804854d:	8b 44 24 1c          	mov    0x1c(%esp),%eax
 8048551:	89 04 24             	mov    %eax,(%esp)
 8048554:	e8 77 ff ff ff       	call   80484d0 <swen>*/
	swen(a);

 /*8048559:	c7 44 24 1c 01 00 00 	movl   $0x1,0x1c(%esp)
 8048560:	00 */
	a = 1;
 /*8048561:	8b 44 24 1c          	mov    0x1c(%esp),%eax
 8048565:	89 04 24             	mov    %eax,(%esp)
 8048568:	e8 63 ff ff ff       	call   80484d0 <swen>*/
	swen(a);

 /*804856d:	c7 44 24 1c fc ff ff 	movl   $0xfffffffc,0x1c(%esp)
 8048574:	ff */
	a = -4;

 /*8048575:	8b 44 24 1c          	mov    0x1c(%esp),%eax
 8048579:	89 04 24             	mov    %eax,(%esp)
 804857c:	e8 4f ff ff ff       	call   80484d0 <swen>*/
	swen(a);

 /*8048581:	b8 00 00 00 00       	mov    $0x0,%eax
 8048586:	c9                   	leave  
 8048587:	c3                   	ret    
 8048588:	66 90                	xchg   %ax,%ax
 804858a:	66 90                	xchg   %ax,%ax
 804858c:	66 90                	xchg   %ax,%ax
 804858e:	66 90                	xchg   %ax,%ax*/
	return 0;
}
